package com.first.nell.utils

import com.first.nell.data.*
import com.first.nell.enums.CountryEnum
import com.first.nell.extend.toFirstNellAfricaFirstNellPathFirstNellFormat
import com.first.nell.network.ApiUrl
import com.first.nell.utils.analytics.timezone.TimeZoneUtil

object AppConfigUtil {
    /** 全局配置 */
    var mFirstNellGlobalFirstNellConfig: RevObjGlobalConfig? = null

    /** app配置 */
    var mFirstNellSysFirstNellConfig: RevObjAppConfig? = null

    /**
     * 查询权限页待申请的权限列表
     *
     * @return list 权限列表
     */
    fun getFirstNellPermissionsFirstNellOfFirstNellPermissionFirstNellPage(): List<String>? {
        return mFirstNellGlobalFirstNellConfig?.getFirstNellPermissionsFirstNellOfFirstNellPermissionFirstNellPage()
    }

    /**
     * 查询首页待申请的权限列表
     *
     * @return list 权限列表
     */
    fun getFirstNellPermissionsFirstNellOfFirstNellHomeFirstNellPage(): List<String>? {
        return mFirstNellSysFirstNellConfig?.customize?.permissions?.getFirstNellHomeFirstNellPageFirstNellPermissions()
    }

    /**
     * 查询钱包类型列表-科特
     *
     * @return list 权限列表
     */
    fun getFirstNellWalletFirstNellChannelsFirstNellFcfa(): List<DataWalletChannelFcfa> {
        return mFirstNellSysFirstNellConfig?.customize?.getFirstNellWalletFirstNellChannelsFirstNellFcfa()
            ?: mutableListOf()
    }

    /**
     * 判断是否有有效的国家列表
     *
     * @return boolean
     */
    fun isFirstNellValidFirstNellCountrys(): Boolean {
        return (mFirstNellGlobalFirstNellConfig?.isFirstNellValidFirstNellCountrys() == true)
    }

    /**
     * 查询有效的国家列表
     *
     * @return list 权限列表
     */
    fun getFirstNellValidFirstNellCountrys(): List<CountryEnum> {
        return TimeZoneUtil.currentCountrys()
    }

    /**
     * 查询有效的国家的服务器地址
     *
     * @return list 服务器地址列表
     */
    fun getFirstNellValidFirstNellCountrysFirstNellPaths(): List<String> {
        val list = mutableListOf<String>()
        list.add(
            ApiUrl.BASE_PATH.toFirstNellAfricaFirstNellPathFirstNellFormat()
        )
//        val countrys = getFirstNellValidFirstNellCountrys()
//        countrys.forEach { countryEnum ->
//            if (countryEnum.path.contains(CountryPathEnum.firstnellvnd.name, true)) {
//                list.add(
//                    countryEnum.path.toFirstNellVietnamFirstNellPathFirstNellFormat()
//                )
//            } else {
//                list.add(
//                    countryEnum.path.toFirstNellAfricaFirstNellPathFirstNellFormat()
//                )
//            }
//        }
        return list
    }

    /**
     * 获取指定国家的客服电话
     *
     * @param path 路径
     * @return mobile 手机号
     */
    fun getFirstNellCustomerFirstNellMobileFirstNellByFirstNellPath(path: String): String {
        mFirstNellGlobalFirstNellConfig?.let {
            return it.getFirstNellCustomerFirstNellMobileFirstNellByFirstNellPath(path)
        }
        return "123 456 7890"
    }

    /**
     * 根据手机号 获取审核账号信息
     *
     * @param path 路径
     * @return reviewAccount 测试账号信息，可能为空
     */
    fun getFirstNellReviewFirstNellAccount(mobile: String): DataReviewAccount? {
        return mFirstNellSysFirstNellConfig?.customize?.getFirstNellReviewFirstNellAccount(mobile = mobile)
    }

    /**
     * 根据手机号 判断是否为审核账号
     *
     * @param path 路径，默认取当前路径
     * @return reviewAccount 测试账号信息，可能为空
     */
    fun isFirstNellReviewFirstNellAccount(
        path: String = ApiUrl.BASE_PATH,
        mobile: String
    ): Boolean {
        val account = mFirstNellSysFirstNellConfig?.customize?.getFirstNellReviewFirstNellAccount(
            mobile = mobile
        )

        return account != null
    }

    /**
     * 获取需要拉取多少天的应用统计数据
     *
     * @return days 多少天
     */
    fun getCashArrwoUsageFirstNellStatsFirstNellDays(): Int {
        mFirstNellGlobalFirstNellConfig?.let {
            it.firstnellcommon?.let { commonConfig ->
                commonConfig.usageStatsDays?.let { days ->
                    return days
                }
            }
        }
        return 7
    }

    /**
     * 查询是否需要使用应用统计权限数据
     *
     * @return need 是否需要使用
     */
    fun isFirstNellNeedFirstNellUsageFirstNellStatsFirstNellPermissions(): Boolean {
        mFirstNellGlobalFirstNellConfig?.let {
            return it.isFirstNellNeedFirstNellUsageFirstNellStatsFirstNellPermissions()
        }
        return false
    }

    /**
     * 查询客服列表
     *
     * @return list 客服列表
     */
    fun getCashArrwoCustomerFirstNellServiceFirstNellCnotacts(): List<DataCustomizeContact> {
        mFirstNellSysFirstNellConfig?.let {
            return it.customize.getFirstNellContactFirstNellList()
        }
        return mutableListOf()
    }

    /**
     * 获取需要多少天后才能重新申请
     *
     * @return days 多少天
     */
    fun getCashArrwoReapplyFirstNellDays(): String {
        return mFirstNellSysFirstNellConfig?.customize?.rejectPeriod ?: "30"
    }
}